function [6:0] ASCII_code;

   input [6:0] scancode;
   input       shift;

   begin
      case (scancode)
        7'H0: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H1: ASCII_code = shift ? 7'H1B /* ? */ : 7'H1B /* ? */;
        7'H2: ASCII_code = shift ? 7'H21 /* ! */ : 7'H31 /* 1 */;
        7'H3: ASCII_code = shift ? 7'H22 /* " */ : 7'H32 /* 2 */;
        7'H4: ASCII_code = shift ? 7'H23 /* # */ : 7'H33 /* 3 */;
        7'H5: ASCII_code = shift ? 7'H24 /* $ */ : 7'H34 /* 4 */;
        7'H6: ASCII_code = shift ? 7'H25 /* % */ : 7'H35 /* 5 */;
        7'H7: ASCII_code = shift ? 7'H5E /* ^ */ : 7'H36 /* 6 */;
        7'H8: ASCII_code = shift ? 7'H26 /* & */ : 7'H37 /* 7 */;
        7'H9: ASCII_code = shift ? 7'H2A /* * */ : 7'H38 /* 8 */;
        7'HA: ASCII_code = shift ? 7'H28 /* ( */ : 7'H39 /* 9 */;
        7'HB: ASCII_code = shift ? 7'H29 /* ) */ : 7'H30 /* 0 */;
        7'HC: ASCII_code = shift ? 7'H5F /* _ */ : 7'H2D /* - */;
        7'HD: ASCII_code = shift ? 7'H2B /* + */ : 7'H3D /* = */;
        7'HE: ASCII_code = shift ? 7'H8 /* ? */ : 7'H8 /* ? */;
        7'HF: ASCII_code = shift ? 7'H9 /* ? */ : 7'H9 /* ? */;
        7'H10: ASCII_code = shift ? 7'H51 /* Q */ : 7'H71 /* q */;
        7'H11: ASCII_code = shift ? 7'H57 /* W */ : 7'H77 /* w */;
        7'H12: ASCII_code = shift ? 7'H45 /* E */ : 7'H65 /* e */;
        7'H13: ASCII_code = shift ? 7'H52 /* R */ : 7'H72 /* r */;
        7'H14: ASCII_code = shift ? 7'H54 /* T */ : 7'H74 /* t */;
        7'H15: ASCII_code = shift ? 7'H59 /* Y */ : 7'H79 /* y */;
        7'H16: ASCII_code = shift ? 7'H55 /* U */ : 7'H75 /* u */;
        7'H17: ASCII_code = shift ? 7'H49 /* I */ : 7'H69 /* i */;
        7'H18: ASCII_code = shift ? 7'H4F /* O */ : 7'H6F /* o */;
        7'H19: ASCII_code = shift ? 7'H50 /* P */ : 7'H70 /* p */;
        7'H1A: ASCII_code = shift ? 7'H7B /* { */ : 7'H5B /* [ */;
        7'H1B: ASCII_code = shift ? 7'H7D /* } */ : 7'H5D /* ] */;
        7'H1C: ASCII_code = shift ? 7'HD /* ? */ : 7'HD /* ? */;
        7'H1D: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H1E: ASCII_code = shift ? 7'H41 /* A */ : 7'H61 /* a */;
        7'H1F: ASCII_code = shift ? 7'H53 /* S */ : 7'H73 /* s */;
        7'H20: ASCII_code = shift ? 7'H44 /* D */ : 7'H64 /* d */;
        7'H21: ASCII_code = shift ? 7'H46 /* F */ : 7'H66 /* f */;
        7'H22: ASCII_code = shift ? 7'H47 /* G */ : 7'H67 /* g */;
        7'H23: ASCII_code = shift ? 7'H48 /* H */ : 7'H68 /* h */;
        7'H24: ASCII_code = shift ? 7'H4A /* J */ : 7'H6A /* j */;
        7'H25: ASCII_code = shift ? 7'H4B /* K */ : 7'H6B /* k */;
        7'H26: ASCII_code = shift ? 7'H4C /* L */ : 7'H6C /* l */;
        7'H27: ASCII_code = shift ? 7'H3A /* : */ : 7'H3B /* ; */;
        7'H28: ASCII_code = shift ? 7'H40 /* @ */ : 7'H27 /* ' */;
        7'H29: ASCII_code = shift ? 7'H60 /* ` */ : 7'H60 /* ` */;
        7'H2A: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H2B: ASCII_code = shift ? 7'H7C /* | */ : 7'H5C /* \ */;
        7'H2C: ASCII_code = shift ? 7'H5A /* Z */ : 7'H7A /* z */;
        7'H2D: ASCII_code = shift ? 7'H58 /* X */ : 7'H78 /* x */;
        7'H2E: ASCII_code = shift ? 7'H43 /* C */ : 7'H63 /* c */;
        7'H2F: ASCII_code = shift ? 7'H56 /* V */ : 7'H76 /* v */;
        7'H30: ASCII_code = shift ? 7'H42 /* B */ : 7'H62 /* b */;
        7'H31: ASCII_code = shift ? 7'H4E /* N */ : 7'H6E /* n */;
        7'H32: ASCII_code = shift ? 7'H4D /* M */ : 7'H6D /* m */;
        7'H33: ASCII_code = shift ? 7'H3C /* < */ : 7'H2C /* , */;
        7'H34: ASCII_code = shift ? 7'H3E /* > */ : 7'H2E /* . */;
        7'H35: ASCII_code = shift ? 7'H3F /* ? */ : 7'H2F /* / */;
        7'H36: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H37: ASCII_code = shift ? 7'H2A /* * */ : 7'H2A /* * */;
        7'H38: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H39: ASCII_code = shift ? 7'H20 /* ? */ : 7'H20 /* ? */;
        7'H3A: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H3B: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H3C: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H3D: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H3E: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H3F: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H40: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H41: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H42: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H43: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H44: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H45: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H46: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H47: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H48: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H49: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H4A: ASCII_code = shift ? 7'H5F /* _ */ : 7'H2D /* - */;
        7'H4B: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H4C: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H4D: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H4E: ASCII_code = shift ? 7'H2B /* + */ : 7'H2B /* + */;
        7'H4F: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H50: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H51: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H52: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H53: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H54: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H55: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H56: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H57: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H58: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H59: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H5A: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H5B: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H5C: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H5D: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H5E: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H5F: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H60: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H61: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H62: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H63: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H64: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H65: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H66: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H67: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H68: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H69: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H6A: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H6B: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H6C: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H6D: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H6E: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H6F: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H70: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H71: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H72: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H73: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H74: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H75: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H76: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H77: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H78: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H79: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H7A: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H7B: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H7C: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H7D: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H7E: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
        7'H7F: ASCII_code = shift ? 7'H0 /* ? */ : 7'H0 /* ? */;
      endcase
   end

endfunction
